import React from "react";

/*
    实现一个斐波那契数列，每一秒定时将数字加入数列。
    提示：斐波那契数列指的是这样一个数列：
    0,1,1,2,3,5...,6,7,
    这个数列前两项固定为0和1，从第3项开始，每一项都等于前两项之和。
*/
export default class Fbnq extends React.Component {
  // 定义静态默认值
  static defaultProps = {
    last: 1,
    lastFront: 0,
  };

  state = {
    arr: [this.props.lastFront, this.props.last],
  };

  componentDidMount() {
    this.timer = setInterval(() => {
      /*
      // 定义一个新数组，浅拷贝
      const newArr = [...this.state.arr];

      // 获取新数组中的 倒数第一位
      const last = newArr.length - 1;
      // 获取新数组中的 倒数第二位
      const lastFont = last - 1;
      // 前两位相加的和
      const next = newArr[last] + newArr[lastFont];

      this.state.arr.push(next);

      this.setState({
        arr: this.state.arr,
      });
      */

      // 简便方式：内容多为ES6语法
      const [last, lastFront] = this.state.arr.slice(-2);
      this.setState({
        arr: [...this.state.arr, last + lastFront],
      });
    }, 1000);
  }

  componentWillUnmount() {
    console.log(`componentWillUnmount`, this.timer);

    clearInterval(this.timer);
  }

  render() {
    return <p>{this.state.arr.join(", ")}</p>;
  }
}
